<?php
	$urlCurso			=	constant('PARAMETRO_1');
	$cursoVisualizado	=	new Curso(null, $urlCurso);
	$idUsuario	=	$this->getUsuario() == null ? null : $this->getUsuario()->getIdUsuario();
	
	if ($cursoVisualizado->getIdCurso() != null) {
		if ($idUsuario != null) {
			if ($_POST) {
				if (isset($_POST['btnSalvar'])) {
					
					$strTituloModulo	=	pegaPost('strTituloModulo');
					$strDescricaoModulo	=	configuraHTMLFormatado(pegaPost('strDescricaoModulo'));
					$strVisibilidade	=	pegaPost('strVisibilidade');
					
					if (defined('PARAMETRO_3') && constant('PARAMETRO_3') == 'inserir') {
						if ($idModulo = Modulo::inserir($cursoVisualizado->getIdCurso(), $idUsuario, $strTituloModulo, $strDescricaoModulo, $strVisibilidade)) {
							foreach ($_POST as $chave => $post) {
								if (preg_match('/^strAssociacao[0-9]+$/', $chave) && $post != '--') {
									//Uma Associacao foi feita
									if (!is_numeric($idModulo)) {
										//Nao conseguiu pegar o id do aviso que acabou de inserir (necessario para criar associcao)
										adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
										break;
									}
									else {
										//conseguiu pegar o id do Aviso que acabou de inserir
										$matches	=	array();
	
										if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
											$categoriaItemAssociacao	=	$matches[1];
											$idItemAssociacao			=	$matches[2];
												
											$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idModulo, 'modulos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
											$objAssociacoes->criarAssociacao($idItemAssociacao, $categoriaItemAssociacao, $idUsuario);
										}
									}
								}
							}
								
							$linkItem	=	preg_replace('/\/$/', '', getUrlCompleta()) . montaLink(array('curso', $cursoVisualizado->getUrlCurso(), 'modulo', $idModulo));
							if ($strVisibilidade == 'nao') {
								//Se o modulo nao esta visivel, so avisa tutores e professores
								$cursoVisualizado->enviaEmailParticipantes($this->getUsuario()->getIdUsuario(), textoEmail('EMAIL_ASSUNTO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_TITULO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_NOVO_MODULO', array($cursoVisualizado->getNomeModulo(), $cursoVisualizado->getNome(), $strTituloModulo, $this->getUsuario()->getNome(), $linkItem)), 'Professores');
								$cursoVisualizado->enviaEmailParticipantes($this->getUsuario()->getIdUsuario(), textoEmail('EMAIL_ASSUNTO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_TITULO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_NOVO_MODULO', array($cursoVisualizado->getNomeModulo(), $cursoVisualizado->getNome(), $strTituloModulo, $this->getUsuario()->getNome(), $linkItem)), 'Tutores');
							}
							else {
								//Se o modulo esta visivel, avisa a todos
								$cursoVisualizado->enviaEmailParticipantes($this->getUsuario()->getIdUsuario(), textoEmail('EMAIL_ASSUNTO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_TITULO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_NOVO_MODULO', array($cursoVisualizado->getNomeModulo(), $cursoVisualizado->getNome(), $strTituloModulo, $this->getUsuario()->getNome(), $linkItem)));
							}
							redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos'));
						}
						else {
							$listaAssociacoes	=	array();
							
							foreach ($_POST as $chave => $post) {
								$matches			=	array();
								if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
									array_push($listaAssociacoes, $matches[1] . '||' . $matches[2]);
								}
							}
							array_push($listaAssociacoes, '--');
							
							$_SESSION['constructore']['gerenciarModulos']['strTituloModulo']		=	$strTituloModulo;
							$_SESSION['constructore']['gerenciarModulos']['strDescricaoModulo']		=	stripslashes($strDescricaoModulo);
							$_SESSION['constructore']['gerenciarModulos']['strVisibilidade']		=	$strVisibilidade;
							$_SESSION['constructore']['gerenciarModulos']['listaAssociacoes']	=	$listaAssociacoes;
							redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos', 'inserir'));
						}
					}
					else {
						if (defined('PARAMETRO_4') && constant('PARAMETRO_4') == 'editar') {
							$idModulo	=	constant('PARAMETRO_3');
							$modulo		=	new Modulo($idModulo);
							if ($modulo->getIdModulo() != null) {
								if (Modulo::editar($modulo->getIdModulo(), $strTituloModulo, $strDescricaoModulo, $strVisibilidade, NULL, NULL, $this->getUsuario()->getIdUsuario())) {
									if ($modulo->getVisivel() == false && $strVisibilidade == 'sim') {
										//O modulo passou a ficar visivel, deve avisar aos alunos
										$cursoVisualizado->enviaEmailParticipantes($this->getUsuario()->getIdUsuario(), textoEmail('EMAIL_ASSUNTO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_TITULO_NOVO_MODULO', array($cursoVisualizado->getNomeModulo())), textoEmail('EMAIL_NOVO_MODULO', array($cursoVisualizado->getNomeModulo(), $cursoVisualizado->getNome(), $strTituloModulo, $this->getUsuario()->getNome(), $linkItem)), 'Alunos');
									}
									
									if (is_numeric($idModulo)) {
										//conseguiu pegar o id do modulo que acabou de inserir
										if (Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'modulos', $idModulo)) {
											foreach ($_POST as $chave => $post) {
												if (preg_match('/^strAssociacao[0-9]+$/', $chave) && $post != '--') {
													//Uma Associacao foi feita
													
													$matches	=	array();
													
													if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
														$categoriaItemAssociacao	=	$matches[1];
														$idItemAssociacao			=	$matches[2];
														
														$objAssociacoes	=	new Associacoes($cursoVisualizado->getIdCurso(), $idModulo, 'modulos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
														$objAssociacoes->criarAssociacao($idItemAssociacao, $categoriaItemAssociacao, $idUsuario);
													}
												}
											}
										}
										else {
											//Nao conseguiu pegar o id do modulo que acabou de inserir (necessario para criar associcao)
											adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
										}
									}
									else {
										//Nao conseguiu pegar o id do modulo que acabou de inserir (necessario para criar associcao)
										adicionaMensagem(texto('MENSAGEM_INSERCAO_COM_SUCESSO_ERRO_ASSOCIACAO'), 'erro');
									}
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos'));
								}
								else {
									$listaAssociacoes	=	array();
							
									foreach ($_POST as $chave => $post) {
										$matches			=	array();
										if (preg_match('/^([^|]+)\|\|([0-9]+)$/', $post, $matches)) {
											array_push($listaAssociacoes, $matches[1] . '||' . $matches[2]);
										}
									}
									array_push($listaAssociacoes, '--');
									
									$_SESSION['constructore']['gerenciarModulos']['strTituloModulo']		=	$strTituloModulo;
									$_SESSION['constructore']['gerenciarModulos']['strDescricaoModulo']		=	stripslashes($strDescricaoModulo);
									$_SESSION['constructore']['gerenciarModulos']['strVisibilidade']		=	$strVisibilidade;
									$_SESSION['constructore']['gerenciarModulos']['listaAssociacoes']	=	$listaAssociacoes;
									redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos', $modulo->getIdModulo(), 'editar'));
								}
							}
							else {
								redireciona(array('404'));
							}
						}
						else {
							redireciona(array('404'));
						}
					}
				}
				
				$ordenarModuloPressionado	=	false;
				foreach($_POST as $chave => $post) {
					if (preg_match('/^btnOrdenarModulo[0-9]+$/', $chave))
						$ordenarModuloPressionado	=	true;
				}
				if ($ordenarModuloPressionado) {
					foreach($_POST as $chave => $post) {
						if (preg_match('/^btnOrdenarModulo[0-9]+$/', $chave))
							$idModulo	=	str_replace('btnOrdenarModulo', '', $chave );
					}
					$funcaoOrdenar	=	$_POST['btnOrdenarModulo'.$idModulo];
					if (Modulo::editar($idModulo, null, null, null, null, $funcaoOrdenar, $this->getUsuario()->getIdUsuario()))
						adicionaMensagem(texto('MENSAGEM_SUCESSO_TROCAR_ORDEM_ITEM'));
					else
						adicionaMensagem(texto('MENSAGEM_ERRO_TROCAR_ORDEM_ITEM'), 'erro');
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos'));
				}
				
				if (isset($_POST['btnExcluir'])) {
					$idModulos	=	"";
					foreach($_POST as $chave => $post) {
						if (preg_match('/^checkModulo[0-9]+$/', $chave)) {
							$idModulos	.=	str_replace('checkModulo', '', $chave ) . ", ";
						}
					}
					$idModulos	=	preg_replace('/\, $/', '', $idModulos);
					if(Modulo::excluir($idModulos))
						adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
					else
						adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos'));
				}
				
				if(isset($_POST['btnInserir'])) {
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos', 'inserir'));
				}
				
				if(isset($_POST['btnCancelar'])) {
					redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos'));
				}
				
				if (isset($_POST['btnExcluirAssociacao'])) {
					$associacao	=	explode('||', pegaPost('btnExcluirAssociacao'));
					if(defined('PARAMETRO_3') && is_numeric(constant('PARAMETRO_3'))) {
						$idModulo	=	constant('PARAMETRO_3');
						if(Associacoes::excluirAssociacao($cursoVisualizado->getIdCurso(), 'modulos', $idModulo, $associacao[0], $associacao[1], $cursoVisualizado->getNomeModulo()))
							adicionaMensagem(texto('MENSAGEM_SUCESSO_APAGAR_ITEM'));
						else
							adicionaMensagem(texto('MENSAGEM_ERRO_APAGAR_ITEM'), 'erro');
						redireciona(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos', $idModulo, 'editar'));
					}
					else {
						redireciona(array("404"));
					}
				}
			}
			else {
				if (defined('PARAMETRO_3') && constant('PARAMETRO_3') == 'inserir') {
					$this->getSmarty()->assign('inserir', true);
					$this->getSmarty()->assign('TITULO_INSERCAO_DE_MODULOS', texto('TITULO_INSERCAO_DE_MODULOS', array($cursoVisualizado->getNomeModulo())));
					$arrayItensInseridos	=	$cursoVisualizado->getItensInseridos();
					//NAO DEIXA ASSOCIAR MODULO COM MODULO
					if (isset($arrayItensInseridos[$cursoVisualizado->getNomeModulo()])) {
						unset($arrayItensInseridos[$cursoVisualizado->getNomeModulo()]);
					}
					$this->getSmarty()->assign('arrayItensInseridos', $arrayItensInseridos);
					if (!isset($_SESSION['constructore']['gerenciarModulos']['listaAssociacoes'])) {
						$_SESSION['constructore']['gerenciarModulos']['listaAssociacoes']	=	array('--');
					}
				}
				else {
					if(defined('PARAMETRO_3') && is_numeric(constant('PARAMETRO_3'))) {
						$idModulo	=	constant('PARAMETRO_3');
						$modulo		=	new Modulo($idModulo);
						if ($modulo->getIdModulo() != null) {
							if (defined('PARAMETRO_4') && constant('PARAMETRO_4') == 'editar') {
								$_SESSION['constructore']['gerenciarModulos']['strTituloModulo']	=	$modulo->getTitulo();
								$_SESSION['constructore']['gerenciarModulos']['strDescricaoModulo']	=	stripslashes($modulo->getApresentacao());
								$_SESSION['constructore']['gerenciarModulos']['strVisibilidade']	=	$modulo->getVisivel() == true ? 'sim' : 'nao';
								
								$listaAssociacoes	=	array();
								
								//Pegando e ajeitando associacoes
								$associacoesModulo	=	new Associacoes($cursoVisualizado->getIdCurso(), $modulo->getIdModulo(), 'modulos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$arrayAssociacoes	=	$associacoesModulo->getAssociacoes();
								foreach ($arrayAssociacoes as $grupoAssociacoes => $associacoesGrupo) {
									foreach ($associacoesGrupo as $chaveAssociacao => $dadosAssociacao) {
										$associacao	=	$grupoAssociacoes . "||" . $dadosAssociacao['idElemento'];
										array_push($listaAssociacoes, $associacao);
									}
								}
								array_push($listaAssociacoes, '--');
								$_SESSION['constructore']['gerenciarModulos']['listaAssociacoes']	=	$listaAssociacoes;
								
								$arrayItensInseridos	=	$cursoVisualizado->getItensInseridos();
								//NAO DEIXA ASSOCIAR MODULO COM MODULO
								if (isset($arrayItensInseridos[$cursoVisualizado->getNomeModulo()])) {
									unset($arrayItensInseridos[$cursoVisualizado->getNomeModulo()]);
								}
								$this->getSmarty()->assign('arrayItensInseridos', $arrayItensInseridos);
								$this->getSmarty()->assign('editar', true);
							}
							else {
								//Nao e possivel visualizar modulo nessa pagina
								redireciona(array('404'));
							}
						}
						else {
							redireciona(array('404'));
						}
					}
					else {
						if (is_array($resultado = $cursoVisualizado->getModulos())) {
							$listaModulos	=	$resultado['listaResultados'];
							$qtdModulos		=	$resultado['qtdResultadosTotal'];
							
							foreach($listaModulos as $chave => $modulo) {
								$listaModulos[$chave]['apresentacao'] = configuraHTMLExibicao($listaModulos[$chave]['apresentacao']);
								
								$listaModulos[$chave]['editarUrl']	=	montalink(array('curso', $cursoVisualizado->getUrlCurso(), 'gerenciarmodulos', $listaModulos[$chave]['idModulo'], 'editar'));
								
								//Pegando e ajeitando associacoes
								$associacoesModulo	=	new Associacoes($cursoVisualizado->getIdCurso(), $modulo['idModulo'], 'modulos', $cursoVisualizado->getUrlCurso(), $cursoVisualizado->getNomeModulo());
								$arrayAssociacoes	=	$associacoesModulo->getAssociacoes();
								foreach ($arrayAssociacoes as $grupoAssociacoes => $associacoesGrupo) {
									foreach ($associacoesGrupo as $chaveAssociacao => $dadosAssociacao) {
										$dadosAssociacaoTemp	=	$dadosAssociacao;

										$dadosAssociacaoTemp['title']	=	texto('TITLE_ASSOCIACOES', array(strip_tags($dadosAssociacao['titulo'])));

										$arrayAssociacoes[$grupoAssociacoes][$chaveAssociacao]	=	$dadosAssociacaoTemp;
									}
								}
								$listaModulos[$chave]['arrayAssociacoes'] = $arrayAssociacoes;
							}
							
							//CONFIGURANDO TEXTOS PARA O TEMPLATE
							//TODO quando pode inserir, permissoes
							$this->getSmarty()->assign('possivelEditar', true);
							$this->getSmarty()->assign('possivelInserir', true);
							$this->getSmarty()->assign('listaModulos', $listaModulos);
							$this->getSmarty()->assign('qtdModulos', $qtdModulos);
							
							$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', array(texto('AREA_GERENCIAR_MODULOS', array($cursoVisualizado->getNomeModulo())) . ' - ' . $cursoVisualizado->getNome())));
							$this->getSmarty()->assign('TEXTO_NAVEGACAO', $cursoVisualizado->getNome() . ' > ' . $cursoVisualizado->getNomeModulo() . ' > ' . texto('AREA_GERENCIAR_MODULOS', array($cursoVisualizado->getNomeModulo())));
							$this->getSmarty()->assign('MENSAGEM_AVISO_MODULOS_VAZIO', texto('MENSAGEM_AVISO_MODULOS_VAZIO', array($cursoVisualizado->getNomeModulo(), $cursoVisualizado->getNomeModulo(), $cursoVisualizado->getNomeModulo(),$cursoVisualizado->getNomeModulo())));
							$this->getSmarty()->assign('LISTA_TITULO_MODULOS_INSERIDOS', texto('LISTA_TITULO_MODULOS_INSERIDOS', array($cursoVisualizado->getNomeModulo(), $cursoVisualizado->getNome())));
						}
						else {
							adicionaMensagem(texto('MENSAGEM_ERRO_INTERNO'), 'erro');
							redireciona($_SESSION['constructore']['URLOrigem']);
						}
					}
				}
				$this->getSmarty()->assign('TITULO_BARRA_NAVEGADOR', texto('TITULO_BARRA_NAVEGADOR', array(texto('AREA_GERENCIAR_MODULOS', array($cursoVisualizado->getNomeModulo())) . ' - ' . $cursoVisualizado->getNome())));
				$this->getSmarty()->assign('TEXTO_NAVEGACAO', $cursoVisualizado->getNome() . ' > ' . $cursoVisualizado->getNomeModulo() . ' > ' . texto('AREA_GERENCIAR_MODULOS', array($cursoVisualizado->getNomeModulo())));
				$this->exibir('gerenciarmodulos');
				if(isset($_SESSION['constructore']['gerenciarModulos'])) {
					unset($_SESSION['constructore']['gerenciarModulos']);
				}
			}
		}
		else {
			redireciona(array('404'));
		}
	}
	else {
		redireciona(array('404'));
	}
?>